repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: check-yaml
      - id: end-of-file-fixer
      - id: trailing-whitespace
      - id: end-of-file-fixer
        types: [ python ]
      - id: requirements-txt-fixer

  - repo: https://github.com/psf/black
    rev: 23.7.0
    hooks:
      - id: black
        args: [ --line-length=100, --exclude="" ]

  # this is not technically always safe but usually is
  # use comments `# isort: off` and `# isort: on` to disable/re-enable isort
  - repo: https://github.com/pycqa/isort
    rev: 5.12.0
    hooks:
      - id: isort
        args: [ --line-length=100, --profile=black ]

  # this is slightly dangerous because python imports have side effects
  # and this tool removes unused imports, which may be providing
  # necessary side effects for the code to run
  - repo: https://github.com/PyCQA/autoflake
    rev: v2.2.0
    hooks:
      - id: autoflake
        args:
          - "--in-place"
          - "--expand-star-imports"
          - "--remove-duplicate-keys"
          - "--remove-unused-variables"
          - "--remove-all-unused-imports"
        exclude: "llm_guard/__init__.py"

  - repo: https://github.com/zricethezav/gitleaks
    rev: v8.17.0
    hooks:
      - id: gitleaks

  - repo: https://github.com/igorshubovych/markdownlint-cli
    rev: v0.35.0
    hooks:
      - id: markdownlint
